SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TXMVTO_CNTB_I47]  
/*-------------------------------------------------------------------*/  
/*----- Empresa           : OFISIS S.A.                          ----*/  
/*----- Cliente           : OFISIS S.A.                          ----*/  
/*----- Sistema           : Contabilidad                         ----*/  
/*----- Modulo            : Empresa                              ----*/  
/*----- Programa          : Proceso de mayorizacion              ----*/  
/*----- Nombre            : SP_TXMVTO_CNTB_I47                   ----*/  
/*----- Script            : TXMVTO_CNTB                          ----*/  
/*----- Desarrollado por  : LMGP                                 ----*/  
/*----- Fecha             : 22/08/2005                           ----*/  
/*----- Base de Datos     : MS SQL Server                        ----*/  
/*----- Version BD        : 2000                                 ----*/  
/*-------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/                      
/*----- Comentarios  : Se lanza desde el trigger:                ----*/                      
/*----- TI_TXMVTO_CNTB_I01 y tU_TXMVTO_CNTB_U01    ----*/                      
/*----- Es un proceso unitario (por cada registro INSERTADO)     ----*/                      
/*-------------------------------------------------------------------*/     
/*----- GRANT EXECUTE ON SP_TXMVTO_CNTB_I47 TO PUBLIC            ----*/                      
/*-------------------------------------------------------------------*/                                
@ISCO_EMPR   TD_VC_002,  
@INNU_CNTB_EMPR TD_IN_001_CONT,  
@ISCO_UNID_CNTB TD_VC_003,  
@ISCO_OPRC_CNTB TD_VC_003,  
@INNU_ANNO   TD_IN_004_ANNO,  
@INNU_MESE TD_IN_002_MESE,  
@ISNU_ASTO      TD_VC_010,  
@INNU_SECU TD_IN_001  
As    
Begin    
Declare     
@CSCO_EMPR       TD_VC_002,    
@CNNU_CNTB_EMPR   TD_IN_001,    
@CNNU_ANNO           TD_IN_001,    
@CNNU_MESE           TD_IN_001,    
@CNNU_SECU  TD_IN_002,    
@CSCO_MONE   TD_VC_003,    
-------- Variables Gesti>n en L-nea ---------    
@CSCO_CNTA_CONT  TD_VC_020_CNTA,    
@CSCO_CNTA_DEST  TD_VC_020_CNTA,    
@CSCO_CNTA_EMPR   TD_VC_020_CNTA,    
@CSCO_ORDE_SERV         TD_VC_020,    
@VNNU_SECU  TD_IN_002,    
@CDFE_ASTO_CNTB   TD_DT_001,    
@CSTI_CAMB  TD_VC_003,    
@CNFA_CAMB   TD_NU_015_006,    
@CNIM_MVTO_ORIG  TD_NU_016_004,    
@CNIM_MVTO_CNTB  TD_NU_016_004,    
@VSTI_OPER  TD_VC_003,    
@CSTI_OPER_CNTB  TD_VC_003,    
@CSDE_GLOS  TD_VC_100,    
@CSCO_OPRC_ORIG      TD_VC_003,    
@CSCO_UNID_ORIG         TD_VC_003,    
@CSNS_ASTO_ORIG         TD_VC_010,    
@CDFE_DOCU_VENC  TD_DT_001,     
@CNFA_CAMB_DIAR  TD_NU_015_006,     
@CDFE_DOCU_REFE  TD_DT_001,     
@VSCO_OPRC_GEST      TD_VC_003,    
@CNNU_PROC  TD_IN_001,     
@CNNU_PROC_SECU  TD_IN_001,    
@CSTI_AUXI_EMPR   TD_VC_001,    
@CSCO_AUXI_EMPR   TD_VC_020,    
@CSST_AUXI_EMPR       TD_VC_001,    
@VSST_AUXI_DEST       TD_VC_001,    
@VSST_AUXI_CONT       TD_VC_001,    
@VNFA_CMPR_OFIC         TD_NU_015_006,    
@VNFA_VNTA_OFIC         TD_NU_015_006,     
@VNFA_CAMB_DIAR         TD_NU_015_006,    
@VSCO_MONE  TD_VC_003,    
@VSCO_CNTA_DEST    TD_VC_020,    
@VSCO_CNTA_CONT     TD_VC_020,    
@VSST_CNTA_CAMB     TD_VC_003,    
@VSST_AUXI_0001     TD_VC_001,    
@VSST_AUXI_0002     TD_VC_001,    
@VSST_ASIE_GEST     TD_VC_003,    
@CSSI_MVTO_CNTB     TD_VC_003,    
@VSNU_ASTO           TD_VC_010,    
@VSNU_ASTO_0001         TD_VC_010,    
@VSST_GEST_LINE      TD_VC_001,    
@VSCO_OPRC_0001      TD_VC_003,    
@VSST_ASIE_APRO      TD_VC_001,    
@VSST_ORDE_0001         TD_VC_001,    
@VSST_ORDE_0002         TD_VC_001,    
@VSTI_AUXI_EMPR   TD_VC_001,    
@VSCO_AUXI_EMPR   TD_VC_020,    
@VSCO_ORDE_SERV         TD_VC_020,    
-------- Variables Fecha de Proceso ---------------    
@CSCO_UNID_CNTB   TD_VC_003,    
@CSCO_OPRC_CNTB      TD_VC_003,    
@CSNU_ASTO              TD_VC_010,    
@CSTI_OPER  TD_VC_003,    
@VNIM_CARG_ORIG         TD_NU_016_004,    
@VNIM_ABON_ORIG         TD_NU_016_004,    
@VNIM_CARG_CNTB         TD_NU_016_004,    
@VNIM_ABON_CNTB         TD_NU_016_004,    
@VSST_CIER_CNTB         TD_VC_001,    
@VSDE_ERRO  TD_VC_050,    
-------- Variables Mayorizaci>n en L-nea ---------    
@VSPR_DATO  TD_VC_020,    
@VNNV_INFO_CNTA         TD_IN_001,    
@VSNV_QUIE_CNTA         TD_VC_020,    
@VNCA_INIC              TD_IN_001,    
@VNCA_LONG              TD_IN_001,    
@VNCA_LONG_AUXI         TD_IN_001,    
@VNNV_AUXI              TD_IN_001,    
@VNNU_FINA              TD_IN_001,    
@VSCO_OPRC_CNTB         TD_VC_003,    
-------- Variables Actualiza Datos Reales ---------    
@CNNU_SECU_MVTO         TD_IN_001,    
@VNIM_MVTO_ORIG         TD_NU_016_004,    
@VNIM_MVTO_CNTB         TD_NU_016_004,    
@VSDE_CADE_IMPR         TD_VC_020,    
@VSCO_MONE_CNTB         TD_VC_003,    
@CNNU_REGI_EMPR         TD_IN_001,    
@CSCO_PART  TD_VC_020,    
@CNPO_APLI  TD_NU_015_006,    
@CSCO_DOMI  TD_VC_003,    
@CNTI_SIGN_CONT         TD_IN_001,    
@CNTI_OPER_ARIT         TD_IN_001,    
@CSCO_MONE_PART         TD_VC_003,    
@CSTI_CAMB_PART         TD_VC_003,     
@VNIM_MVTO  TD_NU_016_004,    
@VNIM_MVTO_ACUM         TD_NU_016_004,    
@VNPO_APLI_DOMI         TD_NU_015_006,    
@VSST_PRES  TD_VC_001,    
@CSTI_DOCU              TD_VC_003,    
@CSNU_DOCU              TD_VC_020,    
@CDFE_DOCU              TD_DT_001,  
  
@CSCO_USUA_CREA         TD_VC_008,  
@CSCO_USUA_MODI         TD_VC_008,  
@CDFE_USUA_CREA         TD_DT_001_SIST,  
@CDFE_USUA_MODI         TD_DT_001_SIST    
  
Declare CT_TXMVTO_CNTB_I02_1 Cursor    
For    
Select  T1.CO_EMPR, T1.NU_CNTB_EMPR,  T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ANNO,    
        T1.NU_MESE, T1.NU_ASTO,      T1.NU_SECU,   T1.FE_ASTO_CNTB,  T1.CO_CNTA_EMPR,    
  T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR,   T1.CO_MONE,  T1.TI_OPER,  Round(T1.IM_MVTO_ORIG, 2),    
 Round(T1.IM_MVTO_CNTB, 2), T1.SI_MVTO_CNTB,   LTRIM(RTRIM(T1.CO_ORDE_SERV)),   
 t1.CO_USUA_CREA, t1.CO_USUA_MODI, t1.FE_USUA_CREA, t1.FE_USUA_MODI    
From TXMVTO_CNTB T1    
Where CO_EMPR = @ISCO_EMPR  
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR  
 And CO_UNID_CNTB = @ISCO_UNID_CNTB  
 And CO_OPRC_CNTB = @ISCO_OPRC_CNTB  
 And T1.CO_OPRC_CNTB NOT IN (Select T2.CO_OPRC_CNTB From TTIDEN_OPER T2    
   Where T1.CO_EMPR = T2.CO_EMPR     
   And T1.NU_CNTB_EMPR = T2.NU_CNTB_EMPR    
   And T2.ID_OPRC In ( '012', '013'))    
 And NU_ANNO = @INNU_ANNO  
 And NU_MESE = @INNU_MESE  
 And NU_ASTO = @ISNU_ASTO  
 And NU_SECU = @INNU_SECU  
       
Open  CT_TXMVTO_CNTB_I02_1    
Fetch CT_TXMVTO_CNTB_I02_1 Into    
 @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,    
 @CSNU_ASTO,  @CNNU_SECU,  @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,    
 @CSCO_MONE,  @CSTI_OPER,  @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSSI_MVTO_CNTB, @CSCO_ORDE_SERV,  
 @CSCO_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_CREA, @CDFE_USUA_MODI     
    
While @@Fetch_Status = 0    
Begin    
  If @@Fetch_Status < 0 Or @CSSI_MVTO_CNTB = 'DIG'    
    Begin    
      Close CT_TXMVTO_CNTB_I02_1    
      Deallocate CT_TXMVTO_CNTB_I02_1    
      Return    
    End    
  
  If @CSTI_AUXI_EMPR = ''    
    Select @CSTI_AUXI_EMPR = NULL    
  If @CSCO_AUXI_EMPR = ''    
    Select @CSCO_AUXI_EMPR = NULL    
  If @CSCO_ORDE_SERV = ''     
    Select @CSCO_ORDE_SERV = NULL    
    
  If @CSTI_OPER = 'CAR'    
    Begin    
      Select @VNIM_CARG_ORIG = @CNIM_MVTO_ORIG    
      Select @VNIM_CARG_CNTB = @CNIM_MVTO_CNTB    
      Select @VNIM_ABON_ORIG = 0    
      Select @VNIM_ABON_CNTB = 0    
    End    
  Else If @CSTI_OPER = 'ABO'    
    Begin    
      Select @VNIM_CARG_ORIG = 0    
      Select @VNIM_CARG_CNTB = 0       Select @VNIM_ABON_ORIG = @CNIM_MVTO_ORIG    
      Select @VNIM_ABON_CNTB = @CNIM_MVTO_CNTB    
    End    
    
  Select @VSPR_DATO = replicate('0',@CNNU_MESE) + '1' + replicate('0',20-(@CNNU_MESE+1))    
    
  If NOT EXISTS(SELECT CO_EMPR    
         FROM TASALD_EMPR    
                WHERE CO_EMPR = @CSCO_EMPR    
                  AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
    AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
    AND NU_ANNO = @CNNU_ANNO    
    AND NU_MESE = @CNNU_MESE    
                  AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
    AND TI_AUXI_EMPR IS NULL    
    AND CO_AUXI_EMPR IS NULL    
    AND CO_ORDE_SERV IS NULL )    
    Insert Into TASALD_EMPR    
    Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
     @CSCO_CNTA_EMPR, NULL, NULL, NULL, @VNIM_CARG_CNTB, @VNIM_ABON_CNTB,     
     @VNIM_CARG_ORIG, @VNIM_ABON_ORIG, @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA,     
     @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
  Else    
    Update TASALD_EMPR    
    Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
  IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
  IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),    
  IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),    
  CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI    
    Where CO_EMPR = @CSCO_EMPR    
      And CO_UNID_CNTB = @CSCO_UNID_CNTB    
      And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
      And NU_ANNO = @CNNU_ANNO    
      And NU_MESE = @CNNU_MESE    
      And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
      And TI_AUXI_EMPR IS NULL    
      And CO_AUXI_EMPR IS NULL    
      And CO_ORDE_SERV IS NULL    
    
    -- Caso Cuenta - SI Auxiliar - SI Orden Servicio      
  If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NOT NULL    
  Begin    
    If NOT EXISTS(Select CO_CNTA_EMPR    
                  From TASALD_EMPR    
                  Where CO_EMPR = @CSCO_EMPR    
                    And CO_UNID_CNTB = @CSCO_UNID_CNTB    
      And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
      And NU_ANNO = @CNNU_ANNO    
      And NU_MESE = @CNNU_MESE    
      And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
      And TI_AUXI_EMPR = @CSTI_AUXI_EMPR    
      And CO_AUXI_EMPR = @CSCO_AUXI_EMPR    
      And CO_ORDE_SERV = @CSCO_ORDE_SERV)     
        -- Inserta aquellos que tienen auxiliares Con Orden Servicio    
       Insert Into TASALD_EMPR    
       Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
        @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_ORDE_SERV,     
        @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, @VNIM_CARG_ORIG, @VNIM_ABON_ORIG,     
        @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
    Else    
      Update TASALD_EMPR    
      Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
    IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
    IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),    
    IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),    
    CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI    
      Where CO_EMPR = @CSCO_EMPR    
        And CO_UNID_CNTB = @CSCO_UNID_CNTB    
        And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
        And NU_ANNO = @CNNU_ANNO    
        And NU_MESE = @CNNU_MESE    
        And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
        And TI_AUXI_EMPR = @CSTI_AUXI_EMPR    
        And CO_AUXI_EMPR = @CSCO_AUXI_EMPR    
 And CO_ORDE_SERV = @CSCO_ORDE_SERV    
  End    
    
    -- Caso Cuenta - SI Auxiliar - NO Orden Servicio      
  If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NULL    
  Begin    
    If NOT EXISTS(Select CO_CNTA_EMPR    
                  From TASALD_EMPR    
                  Where CO_EMPR = @CSCO_EMPR    
                    And CO_UNID_CNTB = @CSCO_UNID_CNTB    
      And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
      And NU_ANNO = @CNNU_ANNO    
      And NU_MESE = @CNNU_MESE    
      And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
      And TI_AUXI_EMPR = @CSTI_AUXI_EMPR    
      And CO_AUXI_EMPR = @CSCO_AUXI_EMPR    
      And CO_ORDE_SERV IS NULL)     
        -- Inserta aquellos que tienen auxiliares Sin Orden Servicio    
       Insert Into TASALD_EMPR    
       Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
        @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, NULL,     
        @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, @VNIM_CARG_ORIG, @VNIM_ABON_ORIG,     
        @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
    Else    
      Update TASALD_EMPR    
      Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
    IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
    IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),    
    IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),    
    CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI    
      Where CO_EMPR = @CSCO_EMPR    
        And CO_UNID_CNTB = @CSCO_UNID_CNTB    
        And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
        And NU_ANNO = @CNNU_ANNO    
        And NU_MESE = @CNNU_MESE    
        And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
        And TI_AUXI_EMPR = @CSTI_AUXI_EMPR    
        And CO_AUXI_EMPR = @CSCO_AUXI_EMPR    
        And CO_ORDE_SERV IS NULL    
  End    
    
  If @CSTI_AUXI_EMPR IS NULL AND @CSCO_AUXI_EMPR IS NULL AND @CSCO_ORDE_SERV IS NOT NULL    
  Begin    
    -- Caso Cuenta - NO Auxiliar - SIN Orden Servicio      
    If NOT EXISTS(SELECT CO_CNTA_EMPR    
                  FROM TASALD_EMPR    
                  WHERE CO_EMPR = @CSCO_EMPR    
                    AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
             AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
             AND NU_ANNO = @CNNU_ANNO    
             AND NU_MESE = @CNNU_MESE    
             AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
             AND TI_AUXI_EMPR Is NULL    
             AND CO_AUXI_EMPR Is NULL    
             AND CO_ORDE_SERV = @CSCO_ORDE_SERV)    
        -- Inserta aquellos que tienen auxiliares Con o Sin Orden Servicio    
      Insert Into TASALD_EMPR    
      Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
       @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_ORDE_SERV,         @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, @VNIM_CARG_ORIG, @VNIM_ABON_ORIG,     
       @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
    Else    
      Update TASALD_EMPR    
      Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
    IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
    IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),    
    IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),    
    CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
      WHERE CO_EMPR = @CSCO_EMPR    
        AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
        AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
        AND NU_ANNO = @CNNU_ANNO    
        AND NU_MESE = @CNNU_MESE    
        AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
        AND TI_AUXI_EMPR Is NULL    
        AND CO_AUXI_EMPR Is NULL    
        AND CO_ORDE_SERV = @CSCO_ORDE_SERV    
  End    
-- INICIO LOOP    
  Select @VNNV_INFO_CNTA = NV_INFO_CNTA,    
         @VSNV_QUIE_CNTA = NV_QUIE_CNTA      
  From   TMPARA_CONT    
  Where  CO_EMPR = @CSCO_EMPR    
    
  Select @VNCA_LONG = DataLength(Rtrim(@VSNV_QUIE_CNTA)) - 1    
  Select @VNNU_FINA = 1    
    
  -- Empieza a Trabajar    
  While @VNNU_FINA = 1    
  Begin    
    -- Selecciona     
    Select @VNCA_INIC = @VNCA_LONG - 2    
    Select @VNCA_LONG = @VNCA_LONG - 2    
    Select @VNNV_AUXI = Convert(Int, Substring(@VSNV_QUIE_CNTA,@VNCA_INIC,2))    
    
    -- Select @VNCA_INIC,@VNCA_LONG, @VNNV_AUXI    
    -- El Nivel Detalle ya existe y si es cero no se hace nada    
    If ( @VNNV_AUXI < @VNNV_INFO_CNTA ) And ( @VNNV_AUXI > 0 )    
    Begin    
      -- Inserta en la Tabla de Saldos    
      If NOT EXISTS(SELECT CO_EMPR    
                      FROM TASALD_EMPR    
                     WHERE CO_EMPR = @CSCO_EMPR    
                    AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
       AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
       AND NU_ANNO = @CNNU_ANNO    
       AND NU_MESE = @CNNU_MESE    
                     AND CO_CNTA_EMPR = Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI)    
       And TI_AUXI_EMPR IS NULL    
       And CO_AUXI_EMPR IS NULL    
       And CO_ORDE_SERV IS NULL )    
        Insert Into TASALD_EMPR    
        Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
        Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI), NULL, NULL, NULL, @VNIM_CARG_CNTB,     
        @VNIM_ABON_CNTB, 0, 0, @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA,     
        @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
      Else    
        Update TASALD_EMPR    
        Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
             IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
             CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
        WHERE CO_EMPR = @CSCO_EMPR    
        AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
        AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
        AND NU_ANNO = @CNNU_ANNO    
        AND NU_MESE = @CNNU_MESE    
        AND CO_CNTA_EMPR = Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI)    
        And TI_AUXI_EMPR IS NULL    
        And CO_AUXI_EMPR IS NULL    
        And CO_ORDE_SERV IS NULL    
        AND Datalength(CO_CNTA_EMPR) = @VNNV_AUXI    
    End    
    If @VNCA_INIC <= 0    
      Select @VNNU_FINA = 0    
    
  End    
-- FIN LOOP    
      
Fetch CT_TXMVTO_CNTB_I02_1 Into    
 @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,    
 @CSNU_ASTO,  @CNNU_SECU,  @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,    
 @CSCO_MONE,  @CSTI_OPER,  @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSSI_MVTO_CNTB, @CSCO_ORDE_SERV,  
 @CSCO_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_CREA, @CDFE_USUA_MODI     
    
End -- END WHILE @@Fetch_Status = 0    
    
  Close CT_TXMVTO_CNTB_I02_1    
  Deallocate CT_TXMVTO_CNTB_I02_1    
  
End  -- Fin si Status de Dif. en cambio NO es 'S'  
---------------------------------------------------------------------------------------------------------  
  
  
  


GO
